接下來幾天,會說明 Airflow 一些額外功能,包含 S3 連接方式、Custom XCom 解決 task 之間的資料傳遞、Slack 通知設定,主要還是圍繞再將 Data Pipeline 設計的更完善上面。
- AWS S3 介紹和連接是為了後續 Custom XCom 做準備
- Slack 通知是為了 airflow 除錯警告
Amazon S3 全名為 Simple Storage Service,是一個雲端儲存服務,支援多種檔案類型,可以用來存放和管理各種文件,如照片、影片、文件、備份等等,隨時下載或分享都可以,還有其他特性,像是擴展性佳、儲存成本低、可用性高(運行期間99.99%可以正常訪問)、版本管控、權限管控、檔案加密等等。常常被用在網站托管、數據備份、或大數據中介站。
類似工具:
題外話:S3 還有多種儲存類別(Storage Classes),正常都是用標準(Standard),之前攝影師朋友跟我說他都用冰河封存類型(Glacier Deep Archive)來存放大量 TB 級的影音資料,儲存很便宜,1TB 每個月只要 1美金,但是真的需要拿回來就需要一大筆錢和時間,但至少是備份的最後手段,之後有機會也試看看~
桶 (bucket)
└── 物件 (object)
├── 路徑名稱 (key)
└── 實際內容 (value)
s3 上每個實體稱為桶(bucket),bucket 內的每個內容稱為物件 (object),想要取的物件,就必須透過物件的 路徑名稱 (key),才能關聯到物件 (object)的實際內容 (value)。
所有的 bucket 名稱都是唯一的,例如我的 bucket 取名叫 abcdef,那就不會有第二個 abcdef bucket,不同的 region 或 account 也不不行重複。
s3 上的物件存取網址為 http://s3.amazonaws.com/{bucket}/{key}
,但要直接點開能夠取得,前提是整個內容都是 public-read 的狀態,基本上不太可能,所以都會透過 IAM 設定特定 user 限制地存取內容,再用這個 user 的 Key ID
和 Access Key
去存取。
IAM 就是用來管理權限的服務,可以設定不同的使用者群組、個別使用者、角色、政策等等,對象可能是人也可能是AWS 其他服務。
- 給 shawn 存取 s3 的服務
- 給 EC2 一個角色(role),且這個 role 已包含存取 s3 的權限 ,此時 EC2 就能夠存取 s3 的服務
在 Airflow 網頁介面,選擇 Admin > Connections,來進入 Connection 管理介面,點擊 + 新增一個新的連接。
AmazonS3FullAccess
(通常 SRE 不會同意,但我們在測試就不要計較了)Access key ID
和 Secret access key
明天就會帶著大家建立一個 S3 Bucket 並使用 S3Hook 進行連接,過程中也會提到另一種連接方式,可以直接在 docker-compose 當中設定 aws 環境變數,就不用到 Airflow 的網頁去設定,在不同環境下設定會更方便,明天見吧~